1. Field of the Invention
This invention relates to motion controllers, and more particularly, to software tools allowing users to create motion control programs having user-specified structure and functionality.
2. Description of the Related Art
Dedicated motion control boards are available for performing motion control functions, thus liberating host computers from the effort of performing these functions. A dedicated motion control board is typically configured to connect to: a host computer, one or more motor drive units, and sensor devices that report the state (e.g., position or velocity) of the motors. Motor drive units are used to provide drive signals with sufficient voltage and current to operate the stepper and/or servo motors. Dedicated motion control boards are generally not designed for user-programmability, and thus, are fixed in their motion control architecture and components. A dedicated motion control board may allow a user to change the values of parameters and set bits to turn various features ON or OFF. However, the inability to reprogram the motion control architecture or components is a severe limitation to the usefulness and cost effectiveness of dedicated motion control boards. A motion control system capable of performing motion control in a manner that is user programmable would be beneficial.
In the prior art, a motion control program may be constructed manually by the user in a graphical programming environment such as LabVIEW or in a text-based programming environment.
In a graphical programming environment, the user may construct the motion control program by:                (a) manually selecting icons representing functions, program control structures (such a conditional structures or looping structures), data structures, input signals and output signals,        (b) manually placing the icons at desired locations in a graphical window, and        (c) manually coupling the icons together to form a diagram.        
The diagram is the motion control program. The diagram may be compiled to form the motion control code.
In a text-based programming environment, the user may construct the motion control program by manually composing a text file (or a set of text files) containing statements conforming to a programming language. In particular, the text file may include calls to routines in one or more predefined libraries. The routines in the predefined libraries allow the user to invoke various functions associated with supervisory control, trajectory generation, and control loop processing. A variety of embodiments are contemplated in order to support a corresponding variety of programming languages such as C, C++, Java, etc.
However, many persons may not be sufficiently trained in the art of programming within one of the supported programming environments to successfully (or efficiently) complete the construction of the motion control program. Therefore, an improved method is desired for creating a motion controller that does not require manual coding of the motion controller.